package visitor;

import symbol.Symbol;
import symbol.Table;
import syntaxtree.BooleanType;
import syntaxtree.ClassDeclExtends;
import syntaxtree.ClassDeclSimple;
import syntaxtree.Formal;
import syntaxtree.Identifier;
import syntaxtree.IdentifierType;
import syntaxtree.IntArrayType;
import syntaxtree.IntegerType;
import syntaxtree.MethodDecl;
import syntaxtree.Program;
import syntaxtree.Type;
import syntaxtree.VarDecl;

public interface TableSymbolVisitor {
	  public Table visit(Program n);
	  public Table visit(ClassDeclSimple n);
	  public Table visit(ClassDeclExtends n);
	  public Symbol visit(VarDecl n);
	  public Table visit(MethodDecl n);
	  public Symbol visit(Formal n);
	  public Symbol visit(IntArrayType n);
	  public Symbol visit(BooleanType n);
	  public Symbol visit(IntegerType n);
	  public Symbol visit(IdentifierType n);
	  /*public Table visit(Block n);
	  public Table visit(If n);
	  public Table visit(While n);
	  public Table visit(Print n);
	  public Table visit(Assign n);
	  public Table visit(ArrayAssign n);
	  public Table visit(And n);
	  public Table visit(LessThan n);
	  public Table visit(Plus n);
	  public Table visit(Minus n);
	  public Table visit(Times n);
	  public Table visit(ArrayLookup n);
	  public Table visit(ArrayLength n);
	  public Table visit(Call n);
	  public Table visit(IntegerLiteral n);
	  public Table visit(True n);
	  public Table visit(False n);
	  public Table visit(IdentifierExp n);
	  public Table visit(This n);
	  public Table visit(NewArray n);
	  public Table visit(NewObject n);
	  public Table visit(Not n);*/
	  public Symbol visit(Identifier n);
}
